iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0
Software Development

ROS進階學習筆記系列 第 17

Day 17 - ROS cross compilation

  • 分享至 

  • xImage
  •  

今天應該是紀錄坑的最後一篇了,感謝雷雷同事貢獻他遇到的坑給我記錄XD
有時候我們會有將程式移植到嵌入式系統上面的需求,因為ros本來就是拿來做機器人的嘛!
但是嵌入式如樹梅派、nvidia TX系列,使用的都是ARM架構,因此誕生了需要cross compile的需求囉! cross complie可以節省編譯時間,同時避免原始碼散落在機器之上,所以來記錄一下如何進行吧!

本篇文章參考此篇教學做出來的,然而最後的成果並沒有支援qt cross compile,所以有些GUI出不來,留待後期遇到了需要解決再來解決吧XD
本機跟樹梅派皆使用ubuntu 16.04 ROS Kinetic,首先要安裝cross compiler toolchain,先確定樹梅派的arm架構是armhf($ dpkg --print-architecture),之後就可以安裝相關的套件:

$ sudo apt install lib32z1-dev
$ sudo apt install gcc-arm-linux-gnueabihf
$ sudo apt install g++-arm-linux-gnueabihf

接下來創一個workspace和package,並且把/opt/ros/kinetic內的資料夾全部複製到workspace底下的package中。注意這邊若是使用sftp或scp,會有些軟連結失效,這邊需要確保全部的檔案都完全複製並放在package中。

接下來是個很麻煩的步驟,因為從/opt/ros/kinetic資料夾撈出來的檔案內的cmake路徑都是絕對路徑,因此要把這些絕對路徑改掉:

/opt/ros/kinetic -> [package路徑]

這個步驟之所以麻煩是因為要進到每個檔案內修改CMAKE_PREFIX_PATHCATKIN_ENV_HOOK_WORKSPACE,但是可以利用IDE進行一鍵修改(VS CODE讚啦)

接下來進入系統lib的部分了,需要把/usr/include/usr/lib/arm-linux-gnueabihf內的東西加進來,就可以下catkin_make囉!

然後就會開始遇到有些package build不過的問題,通常是因為路徑沒接到而發生的,就de一下就好囉XD


雷雷同事說我發文都不附圖太難讓人看懂了,因此筆者決定明天來截圖補上~~~


上一篇
Day 16 - ROS Topic / Service / Action 比較
下一篇
Day 18 - ROS tutlesim
系列文
ROS進階學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言